// placeholder
var $inputs = $('.input > input');

function showHide(el) {
    var val = el.type === 'password' ? el.value : $.trim(el.value),
        $prev = $(el).prev();

    val.length ? $prev.hide() : $prev.show();
}

$inputs.prev().click(function() {
    $(this).next().focus();
});

$inputs.focus(function() {
    $(this).prev().hide();
}).blur(function() {
    showHide(this);
}).each(function() {
    showHide(this);
});

// 表单验证
$('.kv').append('<p class="kv-error"><i class="icon-error"></i><span class="kv-error-txt"></span></p>');

$('#J_loginForm').validate({
    classPlace: '.kv',
    errorPlace: '.kv-error-txt',
    errors: {
        email: {
            required: '请填写登录邮箱'
        },
        password: {
            required: '请填写密码'
        },
        verify: {
            required: '请填写验证码',
            check: checkCaptcha
        }
    }
});

$('#J_regForm').validate({
    classPlace: '.kv',
    errorPlace: '.kv-error-txt',
    errors: {
        email: {
            required: '请填写登录邮箱',
            email: '请填写正确的邮箱地址',
            check: checkEmail
        },
        password: {
            required: '请填写密码',
            check: checkPass
        },
        repassword: {
            required: confirmPass
        },
        'verify_reg': {
            required: '请填写验证码',
            check: checkCaptcha
        },
        xieyi: {
            required: '同意用户协议后才能注册'
        }
    }
});

var loginValidator = $('#J_loginForm').data('validator'),
    regValidator = $('#J_regForm').data('validator'),
    $regPass = $('#reg_password'),
    verifyURL;

function checkCaptcha(field) {
    $.post(U('home/Public/isVerifyAvailable'), {verify: field.value})
    .done(function(msg) {
        return msg === 'success' ? true : '验证码填写错误';
    });
}

function checkEmail(field) {
    $.post(U('home/Public/isEmailAvailable'), {email: field.value })
    .done(function(msg) {
        return msg === 'success' ? true : false;
    });
}

function checkPass(field) {
    var val = field.value,
        min = field.getAttribute('min'),
        msg;

    if (val.length < min) {
        msg =  '密码不能少于 ' + min + ' 位';
    } else {
        // 后台设置密码规则
        // TODO: 客户端验证
        $.post(U('home/Public/isVerifyPwdRole'), {password: val})
        .done(function(data) {
            if (data == '1') {
                msg = '密码必须含有数字';
            } else if (data == '2') {
                msg = '密码必须含有大写字母';
            } else if (data == '3') {
                msg = '密码必须含有小写字母';
            } else if (data == '4') {
                msg = '密码必须含有' + Pass_Symbol;
            } else if (data == 'success') {
                msg = true;
            }
        });
    }

    return msg;
}

function confirmPass(field, v) {
    var pass = $regPass.val(),
        msg;

    if (pass.length === 0) {
        msg = '请先填写密码';
        field.value = '';
        $regPass.one('focus', function() {
            v.removeErrorClass(field);
        });
    } else if (field.value.length === 0) {
        msg = '请填写确认密码';
    } else if (field.value !== pass) {
        msg = '两次密码填写不一致';
        // 注意不要使用 focus() select()等, 这样会取消错误显示
        $(field).one('focus', function() {
            this.value = '';
        });
    } else {
        msg = true;
    }

    return msg;
}

// 切换验证码
$(document).on('click', '.captcha-img', function(e) {
    if (!verifyURL) verifyURL = this.src;
    this.src = verifyURL + '&t=' + new Date().getTime();
}).on('click', '.icon-refresh', function(e) {
    e.preventDefault();
    var img = $(this).prevAll('img')[0];
    if (!verifyURL) verifyURL = img.src;
    img.src = verifyURL + '&t=' + new Date().getTime();
});

// tab
$('.hd > .a').click(function(e) {
    var $hd = $(this).parent('.hd');
    var $a = $hd.children('.a');
    var $b = $hd.siblings('.bd').children('.b');

    if (!$(this).hasClass('cur')) {
        if ($(this).index() === 0) {
            loginValidator.resetForm();
        } else {
            regValidator.resetForm();
        }

        var i = $(this).index($a);
        $(this).addClass('cur').siblings('a').removeClass('cur');
        $b.removeClass('cur');
        $b.eq(i).addClass('cur');
    }

    e.preventDefault();
});

// 用户协议
$('.toagreement').click(function(e) {
    e.preventDefault();
    var $layer = $('.layer');
    if ($layer.length) {
        $layer.show();
    } else {
        var t = $('.main').position().top;
        $('body').append($('#agreement-template').html());
        $layer = $('.layer').css('top', t);
        $('.container').height($('.wrap').height() - t);
        $('.agreement').scrollbar({
            'content': '.agreement-content'
        });
        $('.close', $layer).click(function() {
            $layer.hide();
        });
    }
});

